# -*- coding:utf-8 -*-
# 冒泡排序

'''
重点：每一轮比较都把最大的数放到最后，第二层循环的循环次数是递减的，所以j终止的条件是 j = end - i - 1
'''

# while 写法
def bubble_sort(list):
    # if len(list) < 1:
    #     return list

    i = 0
    end = len(list) - 1
    while i < end:
        j = 0
        while j < end - i:
            if list[j] > list[j + 1]:
                list[j], list[j + 1] = list[j + 1], list[j]
            j = j + 1

        i = i + 1

    return list

# for 写法
def bubble_sort_for(list):
    # if len(list) < 1:
    #     return list

    end = len(list)
    flag = True

    for i in range(end - 1): # 外循环次数等于需排列个数减 1，比如3个数字，只需要循环两轮
        if flag == False:
            break;

        for j in range(end - i - 1): # 单趟排序比较的次数要减去已排序好的个数，即 i
            flag = False
            if list[j] > list[j + 1]:
                list[j], list[j + 1] = list[j + 1], list[j]
                flag = True # 标记有替换操作，否则代表列表已经是有序
    return list

mylist = [2, 1, 5, 4, 0, 0]
print(bubble_sort_for(mylist))
# print(bubble_sort(mylist))